"""
高情商沟通分类实验
"""

import joblib
import pandas as pd

from iflytech_assistant.assistant.dataclasses import FiveSuggestions
from iflytech_assistant.client import instruct_with_profile as instruct

SYSTEM_PROMPT = """# 高情商沟通大师
你是一个高情商沟通大师，你的任务是将用户入的内容转化为高情商的表达方式。

## 沟通技巧
{skill}
"""

PROMPT = """
## 情景描述

我有一句话想对{target}说，但是不知道怎么表达。
如果是你你会如何表达以下内容

```
{user_input}
```
##Output Format:
请按照高情商大师的沟通技巧给出五种不同的表达方式，尽量口语化一些。
请按照指定的格式输出结果，不要改变输出的格式。

## 输出格式

- 每条建议使用不通的表达技巧。
- 输出五条建议后，分别说明每条建议使用的表达技巧。

输出格式示例（xxx直接是改写结果，不要有解释，标签和额外的内容）

1. xxx
2. xxx
3. xxx
4. xxx
5. xxx
A、xxx
B、xxx
C、xxx
D、xxx
E、xxx
"""

df = pd.read_excel(".vscode/高情商分类跑测数据/heqc_cls_hanbing_v2.xlsx")


@joblib.delayed
def run_single(skill: str, target: str, user_input):
    response = instruct(
        PROMPT.format(target=target, user_input=user_input),
        system_prompt=SYSTEM_PROMPT.format(skill=skill),
    )
    five_suggestions = FiveSuggestions.from_generation_result(response)
    return str(five_suggestions)


tasks = []

for _, row in df.iterrows():
    tasks.append(run_single(row["表达技巧"], row["target"], row["input"]))

results = joblib.Parallel(n_jobs=10, verbose=10)(tasks)

df["cls_output"] = results

df.to_excel(".vscode/高情商分类跑测数据/heqc_cls_hanbing_v2_result.xlsx", index=False)
